package com.zzl.bonds.ticket.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzl.bonds.ticket.dto.CashTicketPage;
import com.zzl.bonds.ticket.dto.StatisticsDataDto;
import com.zzl.bonds.ticket.dto.ticketopen.TicketOpenCheckPage;
import com.zzl.bonds.ticket.dto.ticketopen.TicketOpenPage;
import com.zzl.bonds.ticket.dto.ticketopen.TicketOpenSignPage;
import com.zzl.bonds.ticket.entity.TicketOpenEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 开立申请表
 *
 * @author sunpp
 * @email 1171813232@qq.com
 * @date 2022-02-16 14:04:05
 */
@Mapper
@SuppressWarnings("javadoc")
public interface TicketOpenDao extends BaseMapper<TicketOpenEntity> {

    /**
     * 查询包含逻辑删除的数据集合
     *
     * @param ticketOpenEntity 开立申请表对象
     * @return 包含逻辑删除的数据集合
     */
    List<TicketOpenEntity> listIncludeDel(TicketOpenEntity ticketOpenEntity);

    /**
     * 分页查询 开立票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<TicketOpenPage> queryPage(IPage<TicketOpenPage> page, @Param("params") Map<String, Object> params);

    /**
     * 分页查询 开立复核票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<TicketOpenCheckPage> queryOpenCheckPage(IPage<TicketOpenCheckPage> page, @Param("params") Map<String, Object> params);


    /**
     * 分页查询 开立审批票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<TicketOpenCheckPage> queryOpenApprovePage(IPage<TicketOpenCheckPage> page, @Param("params") Map<String, Object> params);


    /**
     * 分页查询 开立签收票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<TicketOpenSignPage> queryOpenSingPage(IPage<TicketOpenSignPage> page, @Param("params") Map<String, Object> params);

    /**
     * 开立页面签收统计三个数量
     *
     * @param enterpriseId 企业id
     * @return 统计数据
     */
    StatisticsDataDto getOpenSignDataDto(@Param("enterpriseId") String enterpriseId);

    /**
     * 开立页面统计三个数量
     *
     * @param enterpriseId 企业id
     * @return 统计数据
     */
    StatisticsDataDto getOpenDataDto(@Param("enterpriseId") String enterpriseId);

    IPage<CashTicketPage>  cashingPage(IPage<CashTicketPage> page, Map<String, Object> params);

}
